In [3]:
import sympy as sy
sy.init_printing()
In [4]:
M, m, g, l, u, w, z, theta, thetadot = sy.symbols('M,m,g,l,u,w,z,theta, thetadot')
In [5]:
Mm = sy.Matrix([[M+m, -m*l*sy.cos(theta)], [-m*l*sy.cos(theta), m*l**2]])
Mm
Out[5]:
In [6]:
G = sy.Matrix([[m*l*sy.sin(theta)*thetadot**2],[m*g*l*sy.sin(theta)]])
G
Out[6]:
In [7]:
F = sy.Matrix([[u+w],[l*w]])
F
Out[7]:
In [8]:
acc = Mm.inv()*(F-G)
sy.simplify(acc.subs({w:0}))
Out[8]:
In [9]:
sy.simplify(sy.sin(theta+sy.pi))
Out[9]:
In [10]:
sy.simplify(sy.cos(theta+sy.pi))
Out[10]:
In [11]:
sy.simplify(sy.cos(-theta))
Out[11]:
In [12]:
theta2 = -theta+sy.pi
In [13]:
sy.simplify(sy.cos(theta2))
Out[13]:
In [14]:
from sympy.physics.mechanics import *
q1,q2 = dynamicsymbols('q1,q2') # q1=z, q2=theta
q1d,q2d = dynamicsymbols('q1,q2',1)
zpdot = q1d -l*sy.cos(q2)*q2d
ypdot = l*sy.sin(q2)*q2d
T = 0.5*M*q1d**2 + 0.5*m*(zpdot**2 + ypdot**2)
sy.simplify(sy.expand(T))
Out[14]:
In [15]:
yp = -l*sy.cos(q2)
U = m*g*yp
L = T-U
L
Out[15]:
In [16]:
LM=LagrangesMethod(L, [q1,q2])
In [17]:
sy.simplify(LM.form_lagranges_equations())
Out[17]:
In [18]:
sy.simplify(LM.mass_matrix)
Out[18]:
In [19]:
sy.simplify(LM.forcing)
Out[19]:
In [20]:
sy.simplify(LM.mass_matrix.inv()*LM.forcing)
Out[20]:
In [ ]: